<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    /*
     *基本数据类型
     *String Number Boolean Null Undefined 
     * 引用数据类型
     * Object
     * 在JS中为我们提供了三个包装类，通过这三个包装类可以将基本数据类型小的数据转换为对象
     * String()可以将基本数据类型字符串转换为String对象
     * Number()可以将基本数据类型的数字转换为Number
     * Boolean()可以将基本数据类型的布尔值转换为Boolean对象
     * 在日常情况中，不会使用基本数据类型的对象
     * 如果使用基本数据类型的对象，在做一些比较时可能会带来一些不可预期的一些结果
     */
    var num1 =new Number(3);//此时num1是object
    var num2 =3;//此时num2是Number类型
    var str1 =new String("hello");//此时str1是object
    var str2 ="hello";//此时str2是String类型
    var bool1=new Boolean(true);//此时bool1是object
    var bool2=true;//此时bool2是Boolean类型
    console.log(typeof num1);
    console.log(typeof num2);
    console.log(typeof str1);
    console.log(typeof str2);
    console.log(typeof bool1);
    console.log(typeof bool2);

    //因为设置了num1
    num1.text1="Hello,World!";
    console.log(num1.text1);//控制台显示Hello,Wordld!
    console.log(num1);//控制台显示num1这个项目中的所有属性

    //方法和属性只能添加给对象，不能添加给基本数据类型
    //当我们对一些基本数据类型的值去调用属性和方法时
    //浏览器会临时使用包装类将其转换为对象，然后在调用对象的属性和方法
    //调用完以后，再将其转换为基本数据类型。所以再转换类型后，给a添加一个属性，也不会在控制台显示，这个属性已经被销毁了
    var a=123;
    a=a.toString();
    console.log(a);
    console.log(typeof a);

    </script>
</head>
<body>
    
</body>
</html>